package com.uniview.service;

import java.util.List;

import com.uniview.entity.po.Menu;
import com.uniview.entity.vo.MenuRole;
import com.uniview.entity.vo.Pager;
import com.uniview.entity.vo.QueryBuilder;

/**
 * 菜单服务类操作接口
 * @author Qingtian Lei
 *
 */
public interface MenuService {
	
	/**
	 * 新增菜单
	 * @param menu 菜单对象
	 * @return
	 * @throws Exception
	 */
	public int addMenu(Menu menu);
	
	/**
	 * 修改菜单
	 * @param menu 菜单对象
	 * @return
	 * @throws Exception
	 */
	public boolean updateMenu(Menu menu);
	
	/**
	 * 删除菜单
	 * @param mId
	 * @return
	 * @throws Exception
	 */
	public boolean deleteMenu(int mId);
	
	/**
	 * 查找所有的菜单
	 * @return
	 * @throws Exception
	 */
	public List<Menu> findAllMenu();
	
	/**
	 * 查找菜单下面的所有子菜单
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public List<Menu> findMenuByParentId(int parentId);
	
	/**
	 * 查找角色对应的菜单信息
	 * @param roleId
	 * @return
	 */
	public List<MenuRole>  findMenuWithRoleId(int roleId);
	
	/**
	 * 根据id查询菜单信息
	 * @param menuId
	 * @return
	 */
	public Menu findMenuById (int menuId);
	
	/**
	 * 根据菜单类型查询父节点菜单
	 * @return
	 */
	public List<Menu> findParentMenu(Integer menuType);
	
	/**
	 * 根据菜单路径查询菜单
	 * @param url
	 * @return
	 * @throws Exception
	 */
	public Menu findMenuByMenuUrl(String url);
	
	/**
	 * 根据roleId查询关联的菜单
	 * @param roleId
	 * @return
	 */
	public List<Menu> findSubMenusByRoleId(Integer roleId);
	
	/**
	 * 根据查询条件分页查询菜单信息
	 * @param queryBuilder
	 * @param pageSize
	 * @param pageNo
	 * @return
	 */
	public Pager<Menu> findMenuByPager(QueryBuilder queryBuilder, int pageSize, int pageNo);
	
	/**
	 * 根据条件查询总数
	 * @param menuName
	 * @param menuId
	 * @return
	 * @throws Exception
	 */
	public Integer findMenuCountByCondition(String menuName,Integer menuId) throws Exception;
	
	/**
	 * 根据用户ID获取对应角色权限的菜单
	 * @param empCode
	 * @return
	 */
	public List<Menu> findMenuByEmployeeId(String empCode) throws Exception;
	
	/**
	 * 查询所有子菜单
	 * 
	 * @return
	 * @throws Exception
	 */
	public List<Menu> findAllClid() throws Exception;
}
